package logic;

public interface ParserConstants
{
    int START_SYMBOL = 54;

    int FIRST_NON_TERMINAL    = 54;
    int FIRST_SEMANTIC_ACTION = 88;

    int[][] PARSER_TABLE =
    {
        { -1, -1, -1, -1, -1,  0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1,  1, -1, -1, -1, -1, -1,  1,  1, -1, -1, -1, -1, -1, -1, -1, -1,  1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1,  2, -1, -1, -1, -1, -1,  3,  3, -1, -1, -1, -1, -1, -1, -1, -1,  3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  4,  5, -1, -1, -1, -1, -1, -1, -1, -1,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  6, -1, -1, -1, -1, -1, -1, -1, -1,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, 25, 24, 25, 25, -1, -1, -1, -1, 25, -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, 20, -1, -1, -1, -1, -1, -1, -1, 21, -1, -1, -1, 19, 19, -1, -1, 19, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  8, -1, -1, -1, -1, -1, -1, -1, -1,  9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, 11, -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, 26, -1, -1, 27, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, -1, -1, -1, 16, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, -1, -1, -1, 37, 38, 39, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, -1, 45, -1, -1, -1, 44, -1, -1, 43, -1, -1, -1, 45, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, 50, 50, 50, 50, -1, -1, -1, -1, 50, -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 49, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
        { -1, 59, 59, 59, 59, -1, -1, -1, -1, 59, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, 52, -1, -1, 52, -1, -1, 51, -1, 52, 52, -1, 52, -1, -1, 52, -1, 51, 51, 51, 51, 51, -1, -1, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, 55, 56, 57, 58, -1, -1, -1, -1 },
        { -1, 65, 65, 65, 65, -1, -1, -1, -1, 65, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, 61, 60, -1, 61, -1, -1, 61, -1, 61, 61, -1, 61, -1, -1, 61, -1, 61, 61, 61, 61, 61, 60, 60, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 63, -1, -1 },
        { -1, 75, 74, 75, 75, -1, -1, -1, -1, 75, -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, -1, -1 },
        { -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, 67, 67, -1, 67, -1, -1, 67, -1, 67, 67, -1, 67, -1, -1, 67, -1, 67, 67, 67, 67, 67, 67, 67, 66, 66 },
        { -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, 69 },
        { -1, -1, -1, -1, -1, -1, -1, -1, 78, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, -1, -1, 78, 78, -1, 78, -1, -1, 78, 76, 78, 78, 77, 78, -1, -1, 78, -1, 78, 78, 78, 78, 78, 78, 78, 78, 78 },
        { -1, 83, -1, 79, 80, -1, -1, -1, -1, 81, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }
    };

    int[][] PRODUCTIONS = 
    {
        {   6,   3,  89,  32,  55,  34 },
        {  56,  57,  58,  59 },
        {   7,   3,  90,  35,  60,  91,  32,  56 },
        {   0 },
        {  13,  92,  61,  93,  33,  62,  32,  94,  57 },
        {   0 },
        {  63,  32,  58 },
        {   0 },
        {  14,   3,  95,  64,  97,  32,  55,  99 },
        {  23,   3,  96,  64,  97,  33,  65,  98,  32,  55,  99 },
        {  36,  66, 100,  61, 101,  33,  65, 102,  67,  37 },
        {   0 },
        {  32,  66, 100,  61, 101,  33,  65, 102,  67 },
        {   0 },
        {   3, 105,  68 },
        {  38,  61 },
        {   0 },
        {  18 },
        {  19 },
        {  65 },
        {   8,  39,  60, 106,  40 },
        {  16,  39,  60, 107,  41,  60, 108,  69,  40,  17,  65, 109 },
        {  38, 110,  60, 107,  41,  60, 108 },
        { 111 },
        {   3, 112 },
        {  87 },
        {  21, 113 },
        {  24, 114 },
        {  20, 115 },
        {  25, 116 },
        {  42,  70,  71,  43 },
        {  32,  70,  71 },
        {   0 },
        {   3, 117,  72 },
        {  59 },
        {  22,  73, 118,  11,  70,  74 },
        {  12,  73, 118,  26,  70 },
        {  27,  36, 119,  61,  37 },
        {  28,  36,  73, 120,  75,  37 },
        {   0 },
        {  29,  70 },
        {   0 },
        { 121,  44,  73, 122 },
        {  39, 123,  73, 124,  76, 125,  40,  44,  73, 122 },
        {  36, 126,  73, 127,  75,  37, 128 },
        { 129 },
        {  38, 130,  73 },
        {   0 },
        {  38,  73, 131,  75 },
        {   0 },
        {  77, 132,  78 },
        {  79,  77, 133 },
        {   0 },
        {  35, 134 },
        {  45, 135 },
        {  46, 136 },
        {  47, 137 },
        {  48, 138 },
        {  49, 139 },
        { 159,  80, 140,  81 },
        {  82, 141,  80, 142,  81 },
        {   0 },
        {  50, 143 },
        {  51, 144 },
        {  30, 145 },
        {  83, 146,  84 },
        {  85, 147,  83, 148,  84 },
        {   0 },
        {  52, 152 },
        {  53, 153 },
        {   9, 154 },
        {  31, 155,  83, 156 },
        {  51, 157,  83, 158 },
        {  36, 159,  73,  37, 160 },
        {   3, 117,  86, 161 },
        {  87, 162 },
        {  36, 163,  73, 127,  75,  37, 164 },
        {  39, 123,  73, 165,  76, 166,  40 },
        { 167 },
        {   4, 168 },
        {   5, 169 },
        {  10, 170 },
        {  15, 171 },
        {   2, 172 }
    };

    String[] PARSER_ERROR =
    {
        "",
        "Era esperado fim de programa",
        "Era esperado literal",
        "Era esperado id",
        "Era esperado número inteiro",
        "Era esperado número real",
        "Era esperado programa",
        "Era esperado const",
        "Era esperado cadeia",
        "Era esperado e",
        "Era esperado falso",
        "Era esperado entao",
        "Era esperado enquanto",
        "Era esperado var",
        "Era esperado proc",
        "Era esperado verdadeiro",
        "Era esperado vetor",
        "Era esperado de",
        "Era esperado ref",
        "Era esperado val",
        "Era esperado booleano",
        "Era esperado inteiro",
        "Era esperado se",
        "Era esperado funcao",
        "Era esperado real",
        "Era esperado caracter",
        "Era esperado faca",
        "Era esperado leia",
        "Era esperado escreva",
        "Era esperado senao",
        "Era esperado ou",
        "Era esperado nao",
        "Era esperado \";\"",
        "Era esperado \":\"",
        "Era esperado \".\"",
        "Era esperado \"=\"",
        "Era esperado \"(\"",
        "Era esperado \")\"",
        "Era esperado \",\"",
        "Era esperado \"[\"",
        "Era esperado \"]\"",
        "Era esperado \"..\"",
        "Era esperado \"{\"",
        "Era esperado \"}\"",
        "Era esperado \":=\"",
        "Era esperado \"<\"",
        "Era esperado \">\"",
        "Era esperado \">=\"",
        "Era esperado \"<=\"",
        "Era esperado \"<>\"",
        "Era esperado \"+\"",
        "Era esperado \"-\"",
        "Era esperado \"*\"",
        "Era esperado \"/\"",
        "Era esperado programa",
        "Símbolos esperados: const, var, proc, funcao, \"{\"",
        "Símbolos esperados: var, proc, funcao, \"{\"",
        "Símbolos esperados: proc, funcao, \"{\"",
        "Esperado proc, funcao ou {",
        "Esperado {",
        "Esperado literal, id, num_int, num_real, falso, verdadeiro",
        "Esperado id",
        "Esperado cadeia, vetor, booleano, inteiro, real, caracter",
        "Esperado proc, funcao",
        "Esperado (, ;, :",
        "Esperado booleano, inteiro, real, caracter",
        "Esperado ref, val",
        "Esperado ; ou )",
        "Esperado , ou :, )",
        "Esperado "," ou ]",
        "Esperado id, enquanto, se, leia, escreva, { ou senao, ;, }",
        "Esperado ; ou }",
        "Esperado (, [, := ou senao, ;, }",
        "Esperado literal, id, num_int, num_real, falso, verdadeiro, nao, (, -",
        "Esperado senao ou ;, }",
        "Esperado , ou )",
        "Esperado , ou ]",
        "Esperado literal, id, num_int, num_real, falso, verdadeiro, nao, (, -",
        "Esperado =, <, >, >=, <=, <> ou entao, faca, senao, ;, ), ,, ], }",
        "Esperado =, <, >, >=, <=, <>",
        "Esperado literal, id, num_int, num_real, falso, verdadeiro, nao, (, -",
        "Esperado ou, +, - ou entao, faca, senao, ;, =, ), ,, ], }, <, >, >=, <=, <>",
        "Esperado ou, +, -",
        "Esperado literal, id, num_int, num_real, falso, verdadeiro, nao, (, -",
        "Esperado e, *, / ou entao, faca, senao, ou, ;, =, ), ,, ], }, <, >, >=, <=, <>, +, -",
        "Esperado e, *, /",
        "Esperado (, [ ou e, entao, faca, senao, ou, ;, =, ), ,, ], }, <, >, >=, <=, <>, +, -, *, /",
        "Esperado literal, num_int, num_real, falso, verdadeiro"
    };
}

